a11y: Parse reference lists using varargs
authorEmmanuele Bassi <ebassi@gnome.org>
Tue, 10 Nov 2020 14:14:47 +0000 (14:14 +0000)
committerEmmanuele Bassi <ebassi@gnome.org>
Tue, 10 Nov 2020 14:31:56 +0000 (14:31 +0000)
Using GList is a bit lame, and makes the API more complicated to use
than necessary in the common case.

The only real use case for a GList is gtk_widget_add_mnemonic_label(),
and for that we can use the GValue-based API instead.

Fixes: #3343
21 files changed:
gtk/gtkaccessiblevalue.c
gtk/gtkbutton.c
gtk/gtkexpander.c
gtk/gtkframe.c
gtk/gtklabel.c
gtk/gtkmenubutton.c
gtk/gtkmodelbutton.c
gtk/gtknotebook.c
gtk/gtkpopovermenubar.c
gtk/gtkscrolledwindow.c
gtk/gtkstackswitcher.c
gtk/gtktestatcontext.c
gtk/gtktestatcontext.h
gtk/gtkwidget.c
testsuite/a11y/accessible.c
testsuite/a11y/button.c
testsuite/a11y/expander.c
testsuite/a11y/general.c
testsuite/a11y/label.c
testsuite/a11y/scrollbar.c
testsuite/a11y/stack.c

index ae9a0626b4ba65f8ef24b3ab7ab6aefc97414b03..63cf0321d234ce39fc8c58d6d21ffd9261aae8ad 100644 (file)
@@ -1120,18 +1120,35 @@ gtk_accessible_value_collect_valist (const GtkAccessibleCollect  *cstate,
         GtkAccessibleValueRefListCtor ctor =
           (GtkAccessibleValueRefListCtor) cstate->ctor;
 
-        GList *value = va_arg (*args, gpointer);
+        GtkAccessible *ref = va_arg (*args, gpointer);
+        GList *value = NULL;
 
-        if (ctor == NULL)
+        while (ref != NULL)
           {
-            if (value == NULL)
-              res = NULL;
-            else
-              res = gtk_reference_list_accessible_value_new (value);
+            if (!GTK_IS_ACCESSIBLE (ref))
+              {
+                g_set_error (error, GTK_ACCESSIBLE_VALUE_ERROR,
+                             GTK_ACCESSIBLE_VALUE_ERROR_INVALID_VALUE,
+                             "Reference of type ā€œ%sā€ [%p] does not implement GtkAccessible",
+                             G_OBJECT_TYPE_NAME (ref), ref);
+                return NULL;
+              }
+
+            value = g_list_prepend (value, ref);
+
+            ref = va_arg (*args, gpointer);
           }
+
+        if (value == NULL)
+          res = gtk_undefined_accessible_value_new ();
         else
           {
-            res = (* ctor) (value);
+            value = g_list_reverse (value);
+
+            if (ctor == NULL)
+              res = gtk_reference_list_accessible_value_new (value);
+            else
+              res = (* ctor) (value);
           }
       }
       break;
index f964eb74953792af03c62abda8f58c22736bb21b..059853106a535ea6d0e8f726f96757b4106ac021 100644 (file)
@@ -939,8 +939,7 @@ gtk_button_set_icon_name (GtkButton  *button,
     }
 
   gtk_accessible_update_relation (GTK_ACCESSIBLE (button),
-                                  GTK_ACCESSIBLE_RELATION_LABELLED_BY,
-                                    g_list_append (NULL, priv->child),
+                                  GTK_ACCESSIBLE_RELATION_LABELLED_BY, priv->child, NULL,
                                   -1);
 
   gtk_button_set_child_type (button, ICON_CHILD);
index 533b567252d51a59d61acf0ff547a0cab84111ff..9b60db04a416e1e3f6ef7f0edb1b2b9500faf739 100644 (file)
@@ -1177,8 +1177,6 @@ void
 gtk_expander_set_child (GtkExpander *expander,
                         GtkWidget   *child)
 {
-  GList *list = NULL;
-
   g_return_if_fail (GTK_IS_EXPANDER (expander));
   g_return_if_fail (child == NULL || GTK_IS_WIDGET (child));
 
@@ -1201,14 +1199,16 @@ gtk_expander_set_child (GtkExpander *expander,
             g_object_ref_sink (expander->child);
           g_object_ref (expander->child);
         }
-    }
 
-  if (expander->child)
-    list = g_list_append (list, expander->child);
-  gtk_accessible_update_relation (GTK_ACCESSIBLE (expander),
-                                  GTK_ACCESSIBLE_RELATION_CONTROLS, list,
-                                  -1);
-  g_list_free (list);
+      gtk_accessible_update_relation (GTK_ACCESSIBLE (expander),
+                                      GTK_ACCESSIBLE_RELATION_CONTROLS, expander->child, NULL,
+                                      -1);
+    }
+  else
+    {
+      gtk_accessible_reset_relation (GTK_ACCESSIBLE (expander),
+                                     GTK_ACCESSIBLE_RELATION_CONTROLS);
+    }
 
   g_object_notify (G_OBJECT (expander), "child");
 }
index a841af777719313d25918a711a6d9e36b8f88c49..a8aa980779d92d84deb4181c187cdb2b1382f8dd 100644 (file)
@@ -376,7 +376,7 @@ update_accessible_relation (GtkFrame *frame)
 
   if (priv->label_widget)
     gtk_accessible_update_relation (GTK_ACCESSIBLE (priv->child),
-                                    GTK_ACCESSIBLE_RELATION_LABELLED_BY, g_list_append (NULL, priv->label_widget),
+                                    GTK_ACCESSIBLE_RELATION_LABELLED_BY, priv->label_widget, NULL,
                                     -1);
   else
     gtk_accessible_reset_relation (GTK_ACCESSIBLE (priv->child),
index 2b3ee4c102d9ed45d9d51b92251ba011904804ac..6aedef6dd0bdc10ac56fb839c4ef8c772ba8d342 100644 (file)
@@ -1696,7 +1696,7 @@ gtk_label_set_text_internal (GtkLabel *self,
   self->text = str;
 
   gtk_accessible_update_property (GTK_ACCESSIBLE (self),
-                                  GTK_ACCESSIBLE_PROPERTY_LABEL, str,
+                                  GTK_ACCESSIBLE_PROPERTY_LABEL, self->text,
                                   -1);
 
   gtk_label_select_region_index (self, 0, 0);
index 4807be39949ed310fc083a3360260fb31112d8f5..93376641c0b70ba1aefb69d099af4baeed4ece7d 100644 (file)
@@ -520,8 +520,7 @@ update_sensitivity (GtkMenuButton *self)
                                   -1);
   if (self->popover != NULL)
     gtk_accessible_update_relation (GTK_ACCESSIBLE (self),
-                                    GTK_ACCESSIBLE_RELATION_CONTROLS,
-                                        g_list_append (NULL, self->popover),
+                                    GTK_ACCESSIBLE_RELATION_CONTROLS, self->popover, NULL,
                                     -1);
   else
     gtk_accessible_reset_relation (GTK_ACCESSIBLE (self),
index 4e4815fdc609cbf37ab948f3e4aad3940ed1d7c6..f5dc05286a3f227f4d7f3f7f6caa978bd53d088f 100644 (file)
@@ -582,7 +582,7 @@ update_accessible_properties (GtkModelButton *button)
 
   if (button->popover)
     gtk_accessible_update_relation (GTK_ACCESSIBLE (button),
-                                    GTK_ACCESSIBLE_RELATION_CONTROLS, g_list_append (NULL, button->popover),
+                                    GTK_ACCESSIBLE_RELATION_CONTROLS, button->popover, NULL,
                                     -1);
   else
     gtk_accessible_reset_relation (GTK_ACCESSIBLE (button),
@@ -683,7 +683,7 @@ gtk_model_button_set_text (GtkModelButton *button,
   update_visibility (button);
 
   gtk_accessible_update_relation (GTK_ACCESSIBLE (button),
-                                  GTK_ACCESSIBLE_RELATION_LABELLED_BY, g_list_append (NULL, button->label),
+                                  GTK_ACCESSIBLE_RELATION_LABELLED_BY, button->label, NULL,
                                   -1);
 
   g_object_notify_by_pspec (G_OBJECT (button), properties[PROP_TEXT]);
index d210c48fde57c567a10456a233e1608d926b4934..6f96faeee17faecf933edb267a3a637a457408a4 100644 (file)
@@ -3968,7 +3968,7 @@ gtk_notebook_insert_notebook_page (GtkNotebook *notebook,
 
   stack_page = gtk_stack_get_page (GTK_STACK (notebook->stack_widget), page->child);
   gtk_accessible_update_relation (GTK_ACCESSIBLE (page->tab_widget),
-                                  GTK_ACCESSIBLE_RELATION_CONTROLS, g_list_append (NULL, stack_page),
+                                  GTK_ACCESSIBLE_RELATION_CONTROLS, stack_page, NULL,
                                   -1);
 
   gtk_accessible_update_state (GTK_ACCESSIBLE (page->tab_widget),
index 8e7f2a22d00003e1162a57274d6f856695e971e3..447dc5fa658ede2934ecd0d8bef9c74dbb2dad2b 100644 (file)
@@ -341,8 +341,8 @@ gtk_popover_menu_bar_item_root (GtkWidget *widget)
   GTK_WIDGET_CLASS (gtk_popover_menu_bar_item_parent_class)->root (widget);
 
   gtk_accessible_update_relation (GTK_ACCESSIBLE (widget),
-                                  GTK_ACCESSIBLE_RELATION_LABELLED_BY, g_list_append (NULL, item->label),
-                                  GTK_ACCESSIBLE_RELATION_CONTROLS, g_list_append (NULL, item->popover),
+                                  GTK_ACCESSIBLE_RELATION_LABELLED_BY, item->label, NULL,
+                                  GTK_ACCESSIBLE_RELATION_CONTROLS, item->popover, NULL,
                                   -1);
   gtk_accessible_update_property (GTK_ACCESSIBLE (widget),
                                   GTK_ACCESSIBLE_PROPERTY_HAS_POPUP, TRUE,
index 85cdacacd5ad600cee2afd37425144e118934ee4..afa250c846c4d6c9793cbbb3abb63de21af267c0 100644 (file)
@@ -4106,7 +4106,6 @@ gtk_scrolled_window_set_child (GtkScrolledWindow *scrolled_window,
 {
   GtkScrolledWindowPrivate *priv = gtk_scrolled_window_get_instance_private (scrolled_window);
   GtkWidget *scrollable_child;
-  GList *list;
 
   g_return_if_fail (GTK_IS_SCROLLED_WINDOW (scrolled_window));
 
@@ -4163,16 +4162,21 @@ gtk_scrolled_window_set_child (GtkScrolledWindow *scrolled_window,
     }
 
   if (priv->child)
-    list = g_list_append (NULL, priv->child);
+    {
+      gtk_accessible_update_relation (GTK_ACCESSIBLE (priv->hscrollbar),
+                                      GTK_ACCESSIBLE_RELATION_CONTROLS, priv->child, NULL,
+                                      -1);
+      gtk_accessible_update_relation (GTK_ACCESSIBLE (priv->vscrollbar),
+                                      GTK_ACCESSIBLE_RELATION_CONTROLS, priv->child, NULL,
+                                      -1);
+    }
   else
-    list = NULL;
-  gtk_accessible_update_relation (GTK_ACCESSIBLE (priv->hscrollbar),
-                                  GTK_ACCESSIBLE_RELATION_CONTROLS, list,
-                                  -1);
-  gtk_accessible_update_relation (GTK_ACCESSIBLE (priv->vscrollbar),
-                                  GTK_ACCESSIBLE_RELATION_CONTROLS, list,
-                                  -1);
-  g_list_free (list);
+    {
+      gtk_accessible_reset_relation (GTK_ACCESSIBLE (priv->hscrollbar),
+                                     GTK_ACCESSIBLE_RELATION_CONTROLS);
+      gtk_accessible_reset_relation (GTK_ACCESSIBLE (priv->vscrollbar),
+                                     GTK_ACCESSIBLE_RELATION_CONTROLS);
+    }
 
   g_object_notify_by_pspec (G_OBJECT (scrolled_window), properties[PROP_CHILD]);
 }
index 86fe74d418b58bed925b1fa7e989ab50ebd61c49..29b1962ec5cd709c0dd0242f653f1e7034f2b9bc 100644 (file)
@@ -276,7 +276,7 @@ add_child (guint             position,
                                -1);
 
   gtk_accessible_update_relation (GTK_ACCESSIBLE (button),
-                                  GTK_ACCESSIBLE_RELATION_CONTROLS, g_list_append (NULL, page),
+                                  GTK_ACCESSIBLE_RELATION_CONTROLS, page, NULL,
                                   -1);
 
   g_signal_connect (button, "notify::active", G_CALLBACK (on_button_toggled), self);
index 4812bc38aef1f5d93d6236436fc5ee2769b1b045..c8bd222d1a6be06280ef35e1adf732c359516a4a 100644 (file)
@@ -171,7 +171,12 @@ gtk_test_accessible_check_property (GtkAccessible         *accessible,
 
   va_end (args);
 
-  g_assert_no_error (error);
+  if (error != NULL)
+    {
+      res = g_strdup (error->message);
+      g_error_free (error);
+      return res;
+    }
 
   if (check_value == NULL)
     check_value = gtk_accessible_value_get_default_for_property (property);
@@ -233,7 +238,12 @@ gtk_test_accessible_check_state (GtkAccessible      *accessible,
 
   va_end (args);
 
-  g_assert_no_error (error);
+  if (error != NULL)
+    {
+      res = g_strdup (error->message);
+      g_error_free (error);
+      return res;
+    }
 
   if (check_value == NULL)
     check_value = gtk_accessible_value_get_default_for_state (state);
@@ -295,7 +305,12 @@ gtk_test_accessible_check_relation (GtkAccessible         *accessible,
 
   va_end (args);
 
-  g_assert_no_error (error);
+  if (error != NULL)
+    {
+      res = g_strdup (error->message);
+      g_error_free (error);
+      return res;
+    }
 
   if (check_value == NULL)
     check_value = gtk_accessible_value_get_default_for_relation (relation);
index 430e7c405dd09d4ddd086f976e5c949aa2b333e4..70d248b19a4ba44ca296d39b9a977c6f299582a2 100644 (file)
@@ -52,19 +52,19 @@ G_STMT_START { \
  * gtk_test_accessible_assert_property:
  * @accessible: a #GtkAccessible
  * @property: a #GtkAccessibleProperty
- * @value: the value of @property
+ * @...: the value of @property
  *
  * Checks whether a #GtkAccessible implementation has its accessible
- * property set to the expected @value, and raises an assertion if the
+ * property set to the expected value, and raises an assertion if the
  * condition is not satisfied.
  */
-#define gtk_test_accessible_assert_property(accessible,property,value) \
+#define gtk_test_accessible_assert_property(accessible,property,...) \
 G_STMT_START { \
   GtkAccessible *__a = GTK_ACCESSIBLE (accessible); \
   GtkAccessibleProperty __p = (property); \
-  char *__value = gtk_test_accessible_check_property (__a, __p, (value)); \
+  char *__value = gtk_test_accessible_check_property (__a, __p, __VA_ARGS__); \
   if (__value == NULL) ; else { \
-    char *__msg = g_strdup_printf ("assertion failed: (" #accessible ".accessible-property(" #property ") == " #value "): value = '%s'", __value); \
+    char *__msg = g_strdup_printf ("assertion failed: (" #accessible ".accessible-property(" #property ") == " # __VA_ARGS__ "): value = '%s'", __value); \
     g_assertion_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, __msg); \
     g_free (__msg); \
   } \
@@ -74,19 +74,19 @@ G_STMT_START { \
  * gtk_test_accessible_assert_relation:
  * @accessible: a #GtkAccessible
  * @relation: a #GtkAccessibleRelation
- * @value: the expected value of @relation
+ * @...: the expected value of @relation
  *
  * Checks whether a #GtkAccessible implementation has its accessible
- * relation set to the expected @value, and raises an assertion if the
+ * relation set to the expected value, and raises an assertion if the
  * condition is not satisfied.
  */
-#define gtk_test_accessible_assert_relation(accessible,relation,value) \
+#define gtk_test_accessible_assert_relation(accessible,relation,...) \
 G_STMT_START { \
   GtkAccessible *__a = GTK_ACCESSIBLE (accessible); \
   GtkAccessibleRelation __r = (relation); \
-  char *__value = gtk_test_accessible_check_relation (__a, __r, (value)); \
+  char *__value = gtk_test_accessible_check_relation (__a, __r, __VA_ARGS__); \
   if (__value == NULL); else { \
-    char *__msg = g_strdup_printf ("assertion failed: (" #accessible ".accessible-relation(" #relation ") == " #value "): value = '%s'", __value); \
+    char *__msg = g_strdup_printf ("assertion failed: (" #accessible ".accessible-relation(" #relation ") == " # __VA_ARGS__ "): value = '%s'", __value); \
     g_assertion_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, __msg); \
     g_free (__msg); \
   } \
@@ -96,19 +96,19 @@ G_STMT_START { \
  * gtk_test_accessible_assert_state:
  * @accessible: a #GtkAccessible
  * @state: a #GtkAccessibleRelation
- * @value: the expected value of @state
+ * @...: the expected value of @state
  *
  * Checks whether a #GtkAccessible implementation has its accessible
- * state set to the expected @value, and raises an assertion if the
+ * state set to the expected value, and raises an assertion if the
  * condition is not satisfied.
  */
-#define gtk_test_accessible_assert_state(accessible,state,value) \
+#define gtk_test_accessible_assert_state(accessible,state,...) \
 G_STMT_START { \
   GtkAccessible *__a = GTK_ACCESSIBLE (accessible); \
   GtkAccessibleState __s = (state); \
-  char *__value = gtk_test_accessible_check_state (__a, __s, (value)); \
+  char *__value = gtk_test_accessible_check_state (__a, __s, __VA_ARGS__); \
   if (__value == NULL); else { \
-    char *__msg = g_strdup_printf ("assertion failed: (" #accessible ".accessible-state(" #state ") == " #value "): value = '%s'", __value); \
+    char *__msg = g_strdup_printf ("assertion failed: (" #accessible ".accessible-state(" #state ") == " # __VA_ARGS__ "): value = '%s'", __value); \
     g_assertion_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, __msg); \
     g_free (__msg); \
   } \
index f3670fa96ceb4df67757afdfaffc4e8298caae24..c29cc88ec0cb8921b4c951c783db57c42530cddf 100644 (file)
@@ -9329,7 +9329,8 @@ gtk_widget_add_mnemonic_label (GtkWidget *widget,
                                GtkWidget *label)
 {
   GSList *old_list, *new_list;
-  GList *list;
+  GtkAccessibleRelation relation = GTK_ACCESSIBLE_RELATION_LABELLED_BY;
+  GValue value = G_VALUE_INIT;
 
   g_return_if_fail (GTK_IS_WIDGET (widget));
   g_return_if_fail (GTK_IS_WIDGET (label));
@@ -9340,10 +9341,13 @@ gtk_widget_add_mnemonic_label (GtkWidget *widget,
   g_object_set_qdata_full (G_OBJECT (widget), quark_mnemonic_labels,
                           new_list, (GDestroyNotify) g_slist_free);
 
-  list = gtk_widget_list_mnemonic_labels (widget);
-  gtk_accessible_update_relation (GTK_ACCESSIBLE (widget),
-                                  GTK_ACCESSIBLE_RELATION_LABELLED_BY, list,
-                                  -1);
+  /* The ATContext takes ownership of the GList returned by list_mnemonic_labels(),
+   * so we don't need to free it
+   */
+  gtk_accessible_relation_init_value (relation, &value);
+  g_value_set_pointer (&value, gtk_widget_list_mnemonic_labels (widget));
+  gtk_accessible_update_relation_value (GTK_ACCESSIBLE (widget), 1, &relation, &value);
+  g_value_unset (&value);
 }
 
 /**
index b353d9e94e4ced2d762b3d23e9cf4fc921736f73..2ea857ac3ea4bb650e7b5da3420490d6b1958f89 100644 (file)
@@ -590,7 +590,6 @@ test_reflist_relation (gconstpointer data)
   TestObject *object;
   TestObject *other;
   TestObject *third;
-  GList *refs;
 
   object = test_object_new (GTK_ACCESSIBLE_ROLE_CHECKBOX);
   other = test_object_new (GTK_ACCESSIBLE_ROLE_CHECKBOX);
@@ -600,21 +599,15 @@ test_reflist_relation (gconstpointer data)
 
   gtk_test_accessible_assert_relation (object, relation, NULL);
 
-  refs = g_list_append (NULL, other);
-
   gtk_accessible_update_relation (GTK_ACCESSIBLE (object),
-                                  relation, refs,
+                                  relation, other, NULL,
                                   -1);
-  gtk_test_accessible_assert_relation (object, relation, refs);
-
-  refs = g_list_append (refs, third);
+  gtk_test_accessible_assert_relation (object, relation, other, NULL);
 
   gtk_accessible_update_relation (GTK_ACCESSIBLE (object),
-                                  relation, refs,
+                                  relation, other, third, NULL,
                                   -1);
-  gtk_test_accessible_assert_relation (object, relation, refs);
-
-  g_list_free (refs);
+  gtk_test_accessible_assert_relation (object, relation, other, third, NULL);
 
   g_object_unref (object);
   g_object_unref (other);
index 803a2fecf84fcf51e0a6ef881be88a8f1af198d9..105e424f0c129dbbf8516fcad8df3dd501f34f01 100644 (file)
@@ -32,13 +32,11 @@ static void
 button_relation (void)
 {
   GtkWidget *button = gtk_button_new_with_mnemonic ("_Hello");
-  GList *list;
 
   g_object_ref_sink (button);
 
-  list = g_list_append (NULL, gtk_widget_get_first_child (button));
-  gtk_test_accessible_assert_relation (GTK_ACCESSIBLE (button), GTK_ACCESSIBLE_RELATION_LABELLED_BY, list);
-  g_list_free (list);
+  gtk_test_accessible_assert_relation (GTK_ACCESSIBLE (button),
+                                       GTK_ACCESSIBLE_RELATION_LABELLED_BY, gtk_widget_get_first_child (button), NULL);
 
   g_object_unref (button);
 }
index 169898f7969591983c8ce29e252bf6c93c0b4bff..07d605622bd742db906ab0dee4585125f5b6c51f 100644 (file)
@@ -31,15 +31,12 @@ expander_relations (void)
 {
   GtkWidget *widget = gtk_expander_new ("Hello");
   GtkWidget *child = gtk_label_new ("Child");
-  GList *list;
 
   g_object_ref_sink (widget);
 
   gtk_expander_set_child (GTK_EXPANDER (widget), child);
 
-  list = g_list_append (NULL, child);
-  gtk_test_accessible_assert_relation (widget, GTK_ACCESSIBLE_RELATION_CONTROLS, list);
-  g_list_free (list);
+  gtk_test_accessible_assert_relation (widget, GTK_ACCESSIBLE_RELATION_CONTROLS, child, NULL);
 
   g_object_unref (widget);
 }
index fe37d0563289f5b756d9aa8e869d19e1fd5b560e..c459b5029c08ad31c1c7d616d3339860cb0c24a2 100644 (file)
@@ -61,7 +61,6 @@ test_labelled_by (void)
 {
   GtkWidget *widget;
   GtkWidget *label;
-  GList *list;
 
   widget = gtk_switch_new ();
   g_object_ref_sink (widget);
@@ -72,9 +71,7 @@ test_labelled_by (void)
   g_object_ref_sink (label);
   gtk_widget_add_mnemonic_label (widget, label);
 
-  list = g_list_append (NULL, label);
-  gtk_test_accessible_assert_relation (widget, GTK_ACCESSIBLE_RELATION_LABELLED_BY, list);
-  g_list_free (list);
+  gtk_test_accessible_assert_relation (widget, GTK_ACCESSIBLE_RELATION_LABELLED_BY, label, NULL);
 
   g_object_unref (widget);
   g_object_unref (label);
index 3eba936bdf316316456d89cae6eb099854406e25..5b6814af49dcc65ae9946d45122a13e7862ad06e 100644 (file)
@@ -18,7 +18,6 @@ label_relations (void)
   GtkWidget *label = gtk_label_new ("a");
   GtkWidget *label2 = gtk_label_new ("b");
   GtkWidget *entry = gtk_entry_new ();
-  GList *list;
 
   g_object_ref_sink (label);
   g_object_ref_sink (label2);
@@ -28,16 +27,11 @@ label_relations (void)
 
   gtk_widget_add_mnemonic_label (entry, label);
 
-  list = g_list_append (NULL, label);
-  gtk_test_accessible_assert_relation (GTK_ACCESSIBLE (entry), GTK_ACCESSIBLE_RELATION_LABELLED_BY, list);
-  g_list_free (list);
+  gtk_test_accessible_assert_relation (GTK_ACCESSIBLE (entry), GTK_ACCESSIBLE_RELATION_LABELLED_BY, label, NULL);
 
   gtk_widget_add_mnemonic_label (entry, label2);
 
-  list = g_list_append (NULL, label);
-  list = g_list_append (list, label2);
-  gtk_test_accessible_assert_relation (GTK_ACCESSIBLE (entry), GTK_ACCESSIBLE_RELATION_LABELLED_BY, list);
-  g_list_free (list);
+  gtk_test_accessible_assert_relation (GTK_ACCESSIBLE (entry), GTK_ACCESSIBLE_RELATION_LABELLED_BY, label, label2, NULL);
 
   g_object_unref (entry);
   g_object_unref (label);
index 71209531511da28aeff45e14acb9e6205de7461b..c17ccb74efe07e9ef681d97fa10907b903602bb8 100644 (file)
@@ -57,7 +57,6 @@ scrollbar_relations (void)
   GtkWidget *hscrollbar;
   GtkWidget *vscrollbar;
   GtkWidget *child;
-  GList *list;
 
   g_object_ref_sink (sw);
 
@@ -70,10 +69,8 @@ scrollbar_relations (void)
   child = gtk_text_view_new ();
   gtk_scrolled_window_set_child (GTK_SCROLLED_WINDOW (sw), child);
 
-  list = g_list_append (NULL, child);
-  gtk_test_accessible_assert_relation (hscrollbar, GTK_ACCESSIBLE_RELATION_CONTROLS, list);
-  gtk_test_accessible_assert_relation (vscrollbar, GTK_ACCESSIBLE_RELATION_CONTROLS, list);
-  g_list_free (list);
+  gtk_test_accessible_assert_relation (hscrollbar, GTK_ACCESSIBLE_RELATION_CONTROLS, child, NULL);
+  gtk_test_accessible_assert_relation (vscrollbar, GTK_ACCESSIBLE_RELATION_CONTROLS, child, NULL);
 
   g_object_unref (sw);
 }
index 3f092c9f55d9bbf1b75377750442bf4ed3c39cf9..cfa01e229e3b533d6af557c9a91c1c16aec0f1eb 100644 (file)
@@ -71,7 +71,6 @@ stack_relations (void)
   GtkWidget *switcher = gtk_stack_switcher_new ();
   GtkWidget *child;
   GtkStackPage *page;
-  GList *list;
 
   g_object_ref_sink (stack);
   g_object_ref_sink (switcher);
@@ -83,15 +82,11 @@ stack_relations (void)
 
   child = gtk_widget_get_first_child (switcher);
   page = gtk_stack_get_page (GTK_STACK (stack), child1);
-  list = g_list_append (NULL, page);
-  gtk_test_accessible_assert_relation (GTK_ACCESSIBLE (child), GTK_ACCESSIBLE_RELATION_CONTROLS, list);
-  g_list_free (list);
+  gtk_test_accessible_assert_relation (GTK_ACCESSIBLE (child), GTK_ACCESSIBLE_RELATION_CONTROLS, page, NULL);
 
   child = gtk_widget_get_last_child (switcher);
   page = gtk_stack_get_page (GTK_STACK (stack), child2);
-  list = g_list_append (NULL, page);
-  gtk_test_accessible_assert_relation (GTK_ACCESSIBLE (child), GTK_ACCESSIBLE_RELATION_CONTROLS, list);
-  g_list_free (list);
+  gtk_test_accessible_assert_relation (GTK_ACCESSIBLE (child), GTK_ACCESSIBLE_RELATION_CONTROLS, page, NULL);
 
   g_object_unref (stack);
   g_object_unref (switcher);